package com.tfjybj.itoo.exam.provider.service;

import com.dmsdbj.itoo.tool.base.service.BaseServicePlus;
import com.dmsdbj.itoo.tool.business.ItooResult;
import com.github.pagehelper.PageInfo;
import com.tfjybj.itoo.exam.entity.EvaluationPaperEntity;
import com.tfjybj.itoo.exam.model.EvaluationPaperModel;
import com.tfjybj.itoo.exam.model.QuestionNaireAllInfoModel;

import java.util.List;
import java.util.Map;


/**
 * TeEvaluationPaperService接口
 * teEvaluationPaper表
 *
 * @author 杨江涛
 * @version 2.0.0
 * @since 2.0.0 2018-12-18 18:19:48
 */
public interface EvaluationPaperService extends BaseServicePlus<EvaluationPaperEntity> {


    /**
     *
     * 查询调查问卷详情
     * @return QuestionNaireAllInfoModel
     * @author 杨晓慧
     * @since 2.0.0 2018-12-23 14:19:48
     */
    QuestionNaireAllInfoModel queryTeEvaluationPaper();


      /**
     * 查询已有答题记录的课程问卷--给前端问卷结果提供接口
     * @param pageNo 页数
     * @param  pageSize  页数
     * @author 杨晓慧
     * @since 2.0.0 2018年12月22日14:57:18
     * @return 页码，页号
     */
    PageInfo<EvaluationPaperModel> queryCourseEvaluationPaperList(Integer pageNo, Integer pageSize) ;

    /**
     * 查询调查问卷
     * @param paperId 问卷id
     * @param courseId 课程id
     * @param studentId 学生id
     * @param schoolYearId 学年学期id
     * @return flag 问卷详情
     * @author 杨晓慧
     * @since 2.0.0 2018年12月17日15:54:37
     */
    ItooResult findQuestionNaire(String paperId, String courseId, String studentId, String schoolYearId);

    /**
     * 无参查询所有可用的评教问卷
     * @return teEvaluationPaperModelList 问卷详情
     * @author 杨江涛
     * @since 2.0.0 2018-12-27 11:50:53
     */
    List<EvaluationPaperModel> findAllQuestionNaire();
    /**
     * 无参查询所有可用的调查问卷
     * @return teEvaluationPaperModelList 问卷详情
     * @author 杨江涛
     * @since 2.0.0 2018-12-27 15:57:40
     */
    List<EvaluationPaperModel> findAllSurveyQuestionNaire();
    /**
     * 更新调查问卷的状态
     * @param id 问卷id
     * @param  status 问卷状态
     * @return teEvaluationPaperModelList 问卷详情
     * @author 杨江涛
     * @since 2.0.0 2018-12-27 17:36:39
     */
    boolean updatePaperStatus(String id, String status);

    /**
     * 更新调查问卷的状态
     * @param evaluationPaperModel 整套问卷的实体
     * @return boolean 是否成功
     * @author 杨江涛
     * @since 2.0.0 2018-12-27 17:36:39
     */
    boolean insertQuestionnaire (EvaluationPaperModel evaluationPaperModel);
    /**
     * 删除问卷
     * @param id 问卷id
     * @return teEvaluationPaperModelList 问卷详情
     * @author 杨江涛
     * @since 2.0.0 2019-1-15 17:02:12
     */
    boolean deleteWholeQuestionnaire(String id);
    /**
     * 编辑问卷
     * @param id 问卷id
     * @return teEvaluationPaperModelList 问卷和试题实体
     * @author 杨江涛
     * @since 2.0.0 2019-1-18 16:28:10
     */
    EvaluationPaperModel queryQuestionnaire(String id);

    /**
     * 更新调查问卷
     * @param evaluationPaperModel 整套问卷的实体
     * @return teEvaluationPaperModelList 问卷详情
     * @author 杨江涛
     * @since 2.0.0 2019年1月23日20:54:24
     */
    boolean updateQuestionnaire(EvaluationPaperModel evaluationPaperModel);
    /**
     * 模糊查询所有可用的问卷
     * @param name 问卷名称
     * @param type 问卷类型
     * @return teEvaluationPaperModelList 问卷详情
     * @author 杨江涛
     * @since 2.0.0 2019-1-25 10:31:58
     */
    List<EvaluationPaperModel> aboutFindAllQuestionNaire(String name, String type);

    /**
         * 查询4小时内考试的问卷资源,将其存放到redis
         * @param
         * @return boolean
         * @author 魏恩君
         * @since 2.0.0 2019/3/19
         */
    Boolean questionnaireResourceRedis();

    /**
         * 查询问卷内容以及学生已答问卷记录
         * @param courseId 课程id
         * @param paperId 问卷id
         * @param studentId 学生id
         * @param schoolYearId 学年学期id
         * @return QuestionNaireAllInfoModel
         * @author 魏恩君
         * @since 2.0.0 2019/3/20
         */
    QuestionNaireAllInfoModel queryQuestionnaireResourse(String courseId, String paperId, String studentId, String schoolYearId);

    /**
     * 从数据库中查询问卷内容以及学生已答问卷记录
     * @param courseId 课程id
     * @param paperId 问卷id
     * @param studentId 学生id
     * @param schoolYearId 学年学期id
     * @return QuestionNaireAllInfoModel
     * @author 魏恩君
     * @since 2.0.0 2019/3/20
     */
    QuestionNaireAllInfoModel queryNaireAndRecord(String paperId, String courseId, String studentId, String schoolYearId);


    /**
     * 根据条件查询调查问卷或评教问卷
     * @since  2019年3月27日10:53:06
     * @param switchNumber 0/1
     * @return
     */
    List<EvaluationPaperModel> questionnaireEnquiryq(String switchNumber);

    List<EvaluationPaperModel> selectTemplateByStatus(Map<String, Object> param);
}
